// 引入 mongoose 建模工具模块
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var ObjectId = Schema.Types.ObjectId // 这里把ObjectId作为字段的类型，作为关联字段的查询， ObjectId为主键，每个 Schema 都会自动生成ObjectId
// 模式
var CategorySchema = new Schema({
    name: String, // 分类名字
    movies: [{type: ObjectId, ref: 'Movie'}], // 分类下的电影数组
    meta: {
        createAt: {
            type: Date,
            default: Date.now()
        },
        updateAt: {
            type: Date,
            default: Date.now()
        }
    }
})
// 每次存贮数据之前都会调用的方法
CategorySchema.pre('save', function (next) {
   if (this.isNew) { // 判断数据是否是新加的
       // 创建时间和更新时间设置为当前时间
       this.meta.createAt = this.meta.updateAt = Date.now()
   } else {
       // 已有数据只更新更新时间 updateAt
       this.meta.updateAt = Date.now()
   }
   next()
})
// 添加静态方法 只有经过 model实例化后才会有
CategorySchema.statics = {
    // 获取所有数据
    fetch: function (cb) {
        return this
            .find({})
            .sort('meta.updateAt')
            .exec(cb)
    },
    findById: function (id, cb) {
        return this
            .findOne({_id: id})
            .sort('meta.updateAt')
            .exec(cb)
    }
}
module.exports = CategorySchema